package cn.telling.product.dao;

import java.util.List;
import java.util.Map;

import cn.telling.product.vo.AreaInfoVo;
import cn.telling.product.vo.BuyerVo;
import cn.telling.product.vo.StoreProductVo;
import cn.telling.product.vo.SupplyArea0Vo;

/**
 * 
 * @ClassName: IDirectionalDao 
 * @Description: 产品定向发布数据服务接口
 * @author 陈赟 
 * @date 2015年6月16日 下午4:27:17 
 *
 */
public interface IDirectionalDao {
    
    /**
     * 
     * @Title: getProductList 
     * @Description: 根据供应商、产品类型、产品名称获取产品列表
     * @param @param supplyId
     * @param @param sortId1
     * @param @param sortId2
     * @param @param productName
     * @param @return    设定文件 
     * @return List<Map<String,String>>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<Map<String, String>> getProductList(String supplyId, String sortId1, String sortId2, String productName,String parentBrand,String childBrand);
    
    /**
     * 
     * @Title: getAreaLsByAreaId 
     * @Description: 根据areaId areaLevel查询areaInfo数据 返回指定市级列表
     * @param @param areaId
     * @param @param level
     * @param @return    设定文件 
     * @return List<AreaInfoVo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<AreaInfoVo> getAreaLsByAreaId(String areaId, String level);
    
    /**
     * 
     * @Title: getProvinceStoreProductVo 
     * @Description: 根据productId、areaId获得指定产品在指定区域的剩余库存
     * @param @param productId
     * @param @param areaId
     * @param @return    设定文件 
     * @return List<StoreProductVo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<StoreProductVo> getProvinceStoreProductVo(String productId, String areaId);
    
    /**
     * 
     * @Title: getSupplyArea 
     * @Description: 根据供应商ID获取销售区域
     * @param @param params
     * @param @return    设定文件 
     * @return List<AreaInfoVo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<AreaInfoVo> getSupplyArea(String ...params);
    
    /**
     * 
     * @Title: getBuyerinfoVo 
     * @Description: 根据areaId返回BuyerVo
     * @param @param areaId
     * @param @return    设定文件 
     * @return List<BuyerVo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<BuyerVo> getBuyerinfoVo(String areaId,Map<String, String> buyerTypeMap);
    
    /**
     * 
     * @Title: getCustomSupplyArea0 
     * @Description: TODO(这里用一句话描述这个方法的作用) 
     * @param @param shopProductId
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> getCustomSupplyArea0(String shopProductId);
    
    /**
     * 
     * @Title: getAreaInfoVo 
     * @Description: 根据区域ID获取区域信息
     * @param @param areaId
     * @param @return    设定文件 
     * @return AreaInfoVo    返回类型 
     * @throws 
     * @author 陈赟
     */
    AreaInfoVo getAreaInfoVo(String areaId);
    
    /**
     * 
     * @Title: insertDirectional 
     * @Description: 保存定向数据 定向到区域  返回供货商区域Id
     * @param @param shopProductId
     * @param @param priceretailonline
     * @param @param stockNumber
     * @param @param areaId
     * @param @param pk_stordoc
     * @param @param userId
     * @param @param gifts
     * @param @param isContainInvoice
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int insertDirectional(String shopProductId,String priceretailonline,String stockNumber,String areaId,String pk_stordoc,String userId,String gifts,String isContainInvoice);

    /**
     * 
     * @Title: insertDirectionalForCustom 
     * @Description: 保存定向数据 定向到客户  返回供货商区域Id
     * @param @param shopProductId
     * @param @param priceretailonline
     * @param @param stockNumber
     * @param @param customId
     * @param @param pk_stordoc
     * @param @param userId
     * @param @param gifts
     * @param @param isContainInvoice
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int insertDirectionalForCustom(String shopProductId,String priceretailonline,String stockNumber,String customId,String pk_stordoc,String userId,String gifts,String isContainInvoice);
    

    /**
     * 
     * @Title: checkIsCustomId 
     * @Description: 根据customId查询指定客户定向记录列表（supply_Area0）
     * @param @param shopProductId
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> checkIsCustomId(String shopProductId);
    
    /**
     * 
     * @Title: checkIsAreaId 
     * @Description: 根据areaId查询指定区域定向记录列表（supply_Area0）
     * @param @param shopProductId
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> checkIsAreaId(String shopProductId);

    /**
     * 
     * @Title: insertDirectionalShare 
     * @Description: 保存定向数据 区域共享库存信息  返回供货商区域Id
     * @param @param shopProId
     * @param @param priceretailonline
     * @param @param stockNumber
     * @param @param areaId
     * @param @param shareCode
     * @param @param userId
     * @param @param pk_stordoc
     * @param @param gifts
     * @param @param isContainInvoice
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int insertDirectionalShare(String shopProId,String priceretailonline,String stockNumber,String areaId,String shareCode,String userId,String pk_stordoc,String gifts,String isContainInvoice);
    
    /**
     * 
     * @Title: insertDirectionalShareForCustom 
     * @Description: 保存定向数据 买家共享库存信息  返回供货商区域Id
     * @param @param shopProId
     * @param @param priceretailonline
     * @param @param stockNumber
     * @param @param customId
     * @param @param shareCode
     * @param @param userId
     * @param @param pk_stordoc
     * @param @param gifts
     * @param @param isContainInvoice
     * @param @return    设定文件 
     * @return int    返回类型 
     * @throws 
     * @author 陈赟
     */
    int insertDirectionalShareForCustom(String shopProId,String priceretailonline,String stockNumber,String customId,String shareCode,String userId,String pk_stordoc,String gifts,String isContainInvoice);
    
    /**
     * 
     * @Title: getSupplyArea0ByIds 
     * @Description: 根据主建获取发布记录
     * @param @param ids
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> getSupplyArea0ByIds(String ids);
    

    /**
     * 
     * @Title: getSupplyArea0ByIds 
     * @Description: 根据产品指定供应商ID获取非定向发布记录
     * @param @param shopProductId
     * @param @return    设定文件 
     * @return List<SupplyArea0Vo>    返回类型 
     * @throws 
     * @author 陈赟
     */
    List<SupplyArea0Vo> getSupplyArea0ByShopProductId(String shopProductId);
    
    
    List<SupplyArea0Vo> getSupplyArea0ByShareCode(String shareCode);
    /**
     * @Description 获取天联在线产品列表
     * @Author daishun
     * @Date 2015-9-14下午8:19:54
     */
    List<Map<String, String>> loadProductList(String  userId, String sortId1, String sortId2,String productName,String saleType,String status,String leafBrandId,String isLeafBrand);
    /**
     * @Description 向shop_product中插入一条记录
     * @Author daishun
     * @Date 2015-9-14下午8:20:32
     */
    int doInsert(String supplyId,String ProductId);
    /**
     * @Description 检查产品是否已经指定此供应商
     * @Author daishun
     * @Date 2015-9-14下午8:20:32
     */
    int doCheck(String supplyId,String ProductId);
    
    /***
     * @Description 获取未发布但是已经指定给供应商产品护具
     * @param userId
     * @return
     */
    List<Map<String,String>> queryNewProductList(String userId,String saleType);
    
}